﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EPlantApp.SignalR.Models
{
    // 设备状态枚举（核心状态）
    public enum DeviceStatus
    {
        Offline = 0,    // 离线
        Running = 1,    // 运行中
        Stopped = 2,    // 已停机（计划内）
        Fault = 3,      // 故障（计划外）
        Maintenance = 4 // 维护中
    }

    // 设备基础信息
    public class DeviceInfo
    {
        /// <summary>
        /// 设备唯一标识（如设备编号）
        /// </summary>
        public string DeviceId { get; set; }

        /// <summary>
        /// 设备名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 所属生产线
        /// </summary>
        public string ProductionLine { get; set; }

        /// <summary>
        /// 所属车间
        /// </summary>
        public string Workshop { get; set; }
    }

    // 设备实时状态
    public class DeviceRealTimeStatus : DeviceInfo
    {
        /// <summary>
        /// 当前状态
        /// </summary>
        public DeviceStatus Status { get; set; }

        /// <summary>
        /// 状态更新时间（UTC）
        /// </summary>
        public DateTime UpdateTime { get; set; }

        /// <summary>
        /// 附加数据（如故障代码、运行参数）
        /// </summary>
        public Dictionary<string, object> MetaData { get; set; } = new();
    }

    // 设备状态变更事件
    public class DeviceStatusChangedEvent : DeviceRealTimeStatus
    {
        /// <summary>
        /// 变更前的状态
        /// </summary>
        public DeviceStatus PreviousStatus { get; set; }

        /// <summary>
        /// 状态变更原因（如操作员手动停机、自动故障）
        /// </summary>
        public string Reason { get; set; }
    }
}
